#ifndef NOISEGEN_UI_HPP_
#define NOISEGEN_UI_HPP_

#include <windows.h>
#include <exception>
#include "NoisePlayer.hpp"
#include "SystemTrayIcon.hpp"
#include "Resources.h"

using std::exception;

enum {
  // icon ID
  ICON_ID = 0x100,

  // menu items
  IDM_ABOUT = 0x100,
  IDM_SETTINGS,
  IDM_EXIT,
};

class NoisegenUI
{
private:
  HICON m_icon32, m_icon16On, m_icon16Off;
  HINSTANCE m_instance;

public:
  NoisegenUI(HINSTANCE instance);
  int Run();

protected:
  bool RegisterMainClass();
  HWND CreateMainWindow(HINSTANCE instance);
  
  static LRESULT CALLBACK WndProc(HWND window, unsigned int message, WPARAM wParam, LPARAM lParam);
};

#endif